import random
from common.files import get_project_root,parse_csv
import os
def generate_id():
    """
    生成一个随机的身份证号 并返回

    :return:
    """
    # 拿到项目根目录
    root = get_project_root()
    # 拼接csv文件
    file_csv = os.path.join(root,'gb2260.csv')
    # 通过解析csv文件获取所有的地区编码
    all_code = parse_csv(file_csv)
    # print(all_code)
    # 随机选择一个列表
    code = random.choice(all_code)
    # print(code)
    # 列表转换为字符串
    p6 = ''.join(code)
    #print(p6)
    # 设置出生年月日
    year = random.randint(1960,2020)
    month = random.randint(1,12)
    # 闰年 2月份 29天
    if year%4==0 and month == 2:
        day=random.randint(1,29)
    # 31天
    elif month in [1,3,5,7,8,10,12]:
        day = random.randint(1,31)
    elif month in [4,6,9,11]:
        day = random.randint(1,30)
    # 平年的2月 28天
    else:
        day = random.randint(1,28)
    # month ，day 小于10 前面补0
    if month<10:
        month = f'0{month}'
    if day <10:
        day = f'0{day}'
    # 合并年月日 转换为字符串
    ymd = f'{year}{month}{day}'
    # print(ymd)
    # 获取最后4位 最后一位X
    l3 = ""
    for i in range(3):
        n = random.randint(0,9)
        # 数字转换字符串 拼接
        l3 = l3+str(n)
    l1 = list(range(10))
    l1.append("X") # [0,1,2,3,4,5,6,7,8,9,"X"]
    # print(l1)
    l = random.choice(l1) # 最后1位
    l4 = l3 + str(l) # 最后4位

    return f'{p6}{ymd}{l4}'


def generate_phone():
    """
    生成一个随机的 11位手机号码
    :return:
    """
    #确定前两位手机
    pre_2 =["13","15","17","18"]
    # 随机选择一个元素
    p2 = random.choice(pre_2)
    # 生成9位随机数字
    l9 = ""
    for i in range(9):
        # 每次循环生成一个随机数字
        n = random.randint(0,9)
        l9 = l9+str(n)  # 将数字转换为字符串之后进行拼接
    return p2+l9

if __name__ == '__main__':
    id = generate_id()
    print(f'最终生成的id：{id}')
